Software vendors are continually advancing the latest in development tools for users to take advantage of software made available to consumers. Typically, such tools require some level of familiarity by developer with the tool(s) language and structure in order to use the development tool(s) and develop the appropriate interface. However, the rapid evolution in which such development frameworks are manufactured and sold impact the speed with which such tools can be understood and used to provide the software for which they are created. Developers are still left spending an inordinate amount of time learning and struggling with the development environment in order to provide a suitable product for a customer.
Conventional development tools have supported data binding to object(s); however, there was limited design-time support. In order to enable design-time support, developer(s) implemented base class(es) that inherited from a specific base class and/or implemented several interface(s). The addition of these base class(es) and/or interface(s) was time-consuming and added limited, if any, value at run-time.
Further, many developers require the ability to limit the creation of their object without providing specific parameters at construction of the object. Because of the varied design patterns, developers were very limited in participation in data binding from even a runtime perspective, much less a design time perspective.
Data binding in conventional system(s) required the ability to query an object for the available properties. If the object was not capable of being instanced, the system was unable to produce a list of bindable properties. Finally, with conventional system(s), once data binding has been established, there is no mechanism for changing the source of the data binding.